package com.yin.login;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;

import javax.sql.DataSource;

@Configuration
@ComponentScan("com.yin.login")
@ConditionalOnClass(DataSource.class)
@EnableConfigurationProperties(LoginProperties.class)
@ConditionalOnProperty(prefix = "login", value = "enable", havingValue = "true")

public class LoginAutoConfiguration {

    @Autowired
    DataSource dataSource;

    @Bean
    // 判断是否存在 JdbcTemplate 类型的 Bean
    @ConditionalOnMissingBean
    JdbcTemplate jdbcTemplate() {
        // JdbcTemplate 是 Spring 提供的 JDBC 模板类
        // 它提供了一系列的方法，用于执行 SQL 语句、查询数据、更新数据等操作
        // 它的作用是简化 JDBC 编程，减少样板代码的编写
        // 它的使用方式是：在配置类中定义一个 JdbcTemplate 类型的 Bean，然后在需要使用的地方自动注入
        return new JdbcTemplate(dataSource);

    }
}
